\documentclass{ctexart}
\bibliographystyle{IEEEtran}
\usepackage{url}
\usepackage{algorithm,algorithmic}
\usepackage{listings}
\usepackage{xcolor}
\usepackage{tikz}
\pagestyle{plain}
\title{DoubleLinkedList的实现}
\author{张祺\\信息与计算科学 2101  3210104145}
\date{2022年10月7日}
\begin{document}
\maketitle
\section{设计思路}
由于c++类对于外部访问的限制，我们无法直接拿到data，而是需要通过类中所提供的方法来构建、修改、查找，以及输出我们的链表。（但由于之前太浪了，还不知道该如何保证内存安全问题）
\subsection{链表的构建}
由于我们声明的类是一个模板类，因此我们在住函数中选取int为该类的类型。而后我们定义了一个类的对象L，并通过push-back将所需要的数据存储到L中。
\subsection{链表的查找}
通过设计一个外部函数find，在find中声明了一个可变迭代器itr，利用重载后的++和*运算符通过itr拿到链表内部的数据，并与所查找的数据进行比较，如果一样则返回该数据对应的节点，反之则返回链表的末尾。并且通过全局变量check来判断find函数是否找到特定数据。
\subsection{链表的输出}
在main函数中声明了一个可变迭代器itr，将itr的初值设定为L链表的头节点，并通过++遍历整个链表，并每次都*itr输出节点对应的数据。
\section{测试样例}
\begin{verbatim}
zq@123456:~$ g++ -std=c++17 -o main main.cpp
zq@123456:~$ ./main
1 2 3 4 5 
1 2 4 5 
Not find ,iter is the tail Node of the list.
\end{verbatim}
\end{document}
